﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.IO;
using pl.polsl.zmitac.bmmsi;

namespace BMMSI_projekt
{
    public partial class Form1 : Form
    {
        private Bitmap bmp, newBmp;

        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            test();
        }


        private void test()
        {
            int liczebnoscPokolenia = 10000;
            int dlugoscKodu = 15;
            Random rand = new Random();
            string[] tabOsobnikow = new string[liczebnoscPokolenia];
            string temp;
            Wyniki wyniki;

            for (int i = 0; i < liczebnoscPokolenia; i++)
            {
                temp = string.Empty;
                for (int j = 0; j < dlugoscKodu; j++)
                {
                    temp += rand.Next(2).ToString();
                }
                tabOsobnikow[i] = temp;
            }

            Genetics.Delegat delegat = new Genetics.Delegat(Foo1);
            Genetics gen = new Genetics(
                liczbaPokolen: 25,
                liczebnoscPokolenia: liczebnoscPokolenia,
                pKrzyzowania: 0.5,
                pMutacji: 0.01,
                rKrzyzowania: Genetics.RodzajKrzyzowania.Jednopunktowe,
                funPrzystosowania: delegat,
                tabRodzicow: tabOsobnikow);
            wyniki = gen.Oblicz();

            string s = string.Empty;
            foreach (double k in wyniki.srednie)
            {
                s += k.ToString() + Environment.NewLine;
            }
            textBox1.Text = s;
        }

        private int Foo1(string ciag)
        {
            int liczba = Obliczenia.ZamienCiagKodowyNaLiczbe(ciag);

            int liczbaDoZgadnięcia = 15;
            int roznica = Math.Abs(liczba - liczbaDoZgadnięcia);

            if (roznica == 0)
                return 5;
            else if (roznica < 10)
                return 3;
            else if (roznica < 100)
                return 2;
            else if (roznica < 1000)
                return 1;
            else
                return 0;
        }

        //private void FooInit()
        //{
        //    bmp = new Bitmap(@"C:/Koala.bmp");
        //    newBmp = new Bitmap(bmp.Width, bmp.Height);
            

        //    int liczebnoscPokolenia = bmp.Width * bmp.Height;
        //    int liczbaPokolen = 25;
        //    int dlugoscKodu = 8;
        //    Random rand = new Random();
        //    string[] tabOsobnikow = new string[liczebnoscPokolenia];
        //    string temp;
        //    Wyniki wyniki;

        //    for (int i = 0; i < liczebnoscPokolenia; i++)
        //    {
        //        temp = string.Empty;
        //        for (int j = 0; j < dlugoscKodu; j++)
        //        {
        //            temp += rand.Next(2).ToString();
        //        }
        //        tabOsobnikow[i] = temp;
        //    }

        //    Genetics.Delegat delegat = new Genetics.Delegat(Foo1);
        //    Genetics gen = new Genetics(
        //        liczbaPokolen: liczbaPokolen,
        //        liczebnoscPokolenia: liczebnoscPokolenia,
        //        pKrzyzowania: 0.5,
        //        pMutacji: 0.01,
        //        rKrzyzowania: Genetics.RodzajKrzyzowania.Jednopunktowe,
        //        funPrzystosowania: delegat,
        //        tabRodzicow: tabOsobnikow);
        //    wyniki = gen.Oblicz();
        //}

        //private int Foo(string s)
        //{
        //    int liczba = Obliczenia.ZamienCiagKodowyNaLiczbe(s);
        //}
        
    }
}
